package com.ruoyi.api.apkVersion.entity;

import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * 说明：上传文件
 * 作者：FH Admin Q 313-596-790
 */
public class FileUpload {

  /**
   * 上传文件
   *
   * @param file     //文件对象
   * @param filePath //上传路径
   * @param fileName //文件名
   * @return 文件名
   */
  public static String fileUp(MultipartFile file, String filePath, String fileName) {
    String extName = ""; // 扩展名格式：
    try {
      if (file.getOriginalFilename().lastIndexOf(".") >= 0) {
        extName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
      }
      copyFile(file.getInputStream(), filePath, fileName + extName).replaceAll("-", "");
    } catch (IOException e) {
      System.out.println(e);
    }
    return fileName + extName;
  }

  /**
   * 写文件到当前目录的upload目录中
   *
   * @param in
   * @throws IOException
   */
  public static String copyFile(InputStream in, String dir, String realName)
    throws IOException {
    File file = mkdirsmy(dir, realName);
    FileUtils.copyInputStreamToFile(in, file);
    in.close();
    return realName;
  }


  /**
   * 判断路径是否存在，否：创建此路径
   *
   * @param dir      文件路径
   * @param realName 文件名
   * @throws IOException
   */
  public static File mkdirsmy(String dir, String realName) throws IOException {
    File file = new File(dir, realName);
    if (!file.exists()) {
      if (!file.getParentFile().exists()) {
        file.getParentFile().mkdirs();
      }
      file.createNewFile();
    }
    return file;
  }


  /**
   * 下载网络图片上传到服务器上
   *
   * @param httpUrl    图片网络地址
   * @param filePath   图片保存路径
   * @param myFileName 图片文件名(null时用网络图片原名)
   * @return 返回图片名称
   */
  public static String getHtmlPicture(String httpUrl, String filePath, String myFileName) {

    URL url;            //定义URL对象url
    BufferedInputStream in;      //定义输入字节缓冲流对象in
    FileOutputStream file;      //定义文件输出流对象file
    try {
      String fileName = null == myFileName ? httpUrl.substring(httpUrl.lastIndexOf("/")).replace("/", "") : myFileName; //图片文件名(null时用网络图片原名)
      url = new URL(httpUrl);    //初始化url对象
      in = new BufferedInputStream(url.openStream());                  //初始化in对象，也就是获得url字节流
      //file = new FileOutputStream(new File(filePath +"\\"+ fileName));
      file = new FileOutputStream(mkdirsmy(filePath, fileName));
      int t;
      while ((t = in.read()) != -1) {
        file.write(t);
      }
      file.close();
      in.close();
      return fileName;
    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return null;

  }
}
